package com.chennan.rebbitmq.constant;

/**
 * @author chennan
 * @create 2022-04
 */
public enum RabbitMQExchangeEnum {
    /**
     * fanout 该类型交换机会将一条消息广播到绑定该交换机的所有队列上，不论你设置的路由键是什么
     *
     * direct 该类型的交换机会将绑定的路由建完全匹配的方式路由到指定的队列上。
     * 如果路由键不匹配，那么就不会发送到任何队列中去。
     *
     * topic 该种类型的交换机会是对上述fanout和direct类型的交换机的一种扩展。
     *      其和direct很类似，但是匹配规则上有所不同。其约定的路由匹配规则有：
     *      routingkey通过符号“.”进行分割，其分割出来的单词就是路由的匹配元素。比如com.aa.tian这种就表示顺序单词com、aa、tian。
     *      符号“*”和“#”分别用来进行模糊匹配，其中“*”用来表示一个单词，“#”用来匹配多个单词。
     *
     * headers 该类型的交换器不依赖路由键的匹配规则分发消息，而是根据发送的消息内容的headers属性进行匹配。
     *      在绑定队列和交换器时制定一组键值对，当发送消息到交换机的时候，rabbitmq会获取该消息的headers，
     *      对比其中的键值对是否完全匹配队列和交换器绑定时指定的键值对。如果完全匹配消息就会路由到该队列，
     *      否则不会路由到该队列。headers类型的交换机性能会很差，而且也不实用！
     */
    DIRECT("direct","直连"),
    FANOUT("fanout","广发"),
    TOPIC("topic","主题模式"),
    HEADERS("headers","匹配头"),
    ;


    private String type;
    private String text;

    RabbitMQExchangeEnum(String type, String text){
        this.type = type;
        this.text = text;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getText() {
        return text;
    }

    public void setText(String text) {
        this.text = text;
    }
}
